/*
 * LDIR
 * 
 * LDIR, a GPS cartography application built for Let's Do It Romania eco 
 * campaign.
 * Copyright (C) 2010 Genera Software <office@generasoftware.com>
 * 
 * http://generasoftware.com/
 * 
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 2 of the License, or (at your option) any later
 * version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place, Suite 330, Boston, MA 02111-1307 USA
 */
#ifndef GPSLOCATOR_H
#define GPSLOCATOR_H

#include "events.h"
#include <lbs.h>

class CGPSPositionData;

class CGPSLocator : public CActive
    {
public:
    static CGPSLocator* NewL();
    static CGPSLocator* NewLC();
    ~CGPSLocator();

    CGPSPositionData& PositionData();
    
private:
    CGPSLocator();
    void ConstructL();

private:
    // From CActive
    void RunL();
    void DoCancel();
    TInt RunError(TInt aError);

public: // EVENTS
    TEvent1<void, const CGPSPositionData&> PositionUpdated;
    TEvent1<void, const CGPSPositionData&> PositionUpdatedPartial;
    TEvent0<void> QualityLoss;
    TEvent0<void> TimedOut;
    TEvent1<void, TInt> PositionError;
    TEvent1<void, const TDesC&> PositioningMethod;
    
public:
    void StartL();
    void Stop();
    void SetPositionModuleInfo();
private:
    void RequestPositionL();
    
private:
    RPositionServer iPositionServer;
    RPositioner iPositioner;
    HPositionGenericInfo* iPositionInfo;
    CGPSPositionData* iPositionData;
    TPositionModuleId iPositionModuleId;
    TPositionModuleInfo iPositionModuleInfo;
    };

#endif
